package com.transferdata.webjsp.utils;//package com.datadto.demo.utils;//
//// Source code recreated from a .class file by IntelliJ IDEA
//// (powered by Fernflower decompiler)
////
//
//import org.apache.commons.codec.binary.Hex;
//import org.junit.jupiter.api.Test;
//
//public class CertificateCoderTest {
//	static String password = "123456";
//	static String keyStorePath = "E:\\signtest\\WebRoot\\bob.pfx";
//	static String bobkeyStorePath = "E:\\signtest\\WebRoot\\bob.pfx";
//	static String alicekeyStorePath = "E:\\signtest\\WebRoot\\alice.pfx";
//	String filepath = "C:\\Users\\admin\\Desktop\\1.txt";
//
//	@Test
//	public void test1() throws Exception {
//		System.err.println("公钥加密---私钥解密");
//		String inputStr = FileUtil.getFileInfo(filepath);
//		byte[] data = FileUtil.getBytes(inputStr);
//		byte[] encrypt = CertificateCode.encryptByPublicKey(data, keyStorePath, password);
//		byte[] decrypt = CertificateCode.decryptByPrivateKey(encrypt, keyStorePath, password);
//		String outputStr = FileUtil.getString(decrypt);
//		System.err.println("加密前：\n" + inputStr);
//		System.err.println("解密后：\n" + outputStr);
//	}
//
//	@Test
//	public void test2() throws Exception {
//		System.err.println("私钥加密---公钥解密");
//		String inputStr = FileUtil.getSha512HexStr(this.filepath);
//		byte[] data = inputStr.getBytes();
//		byte[] encodedData = CertificateCode.encryptByPriateKey(data, keyStorePath, password);
//		byte[] decodeData = CertificateCode.decryptByPublicKey(encodedData, keyStorePath, password);
//		String outputStr = new String(decodeData);
//		System.err.println("加密前：\n" + inputStr);
//		System.err.println("解密后：\n" + outputStr);
//	}
//
//	@Test
//	public void testSign() throws Exception {
//		String inputStr = "签名";
//		byte[] data = inputStr.getBytes();
//		System.out.println("data::" + data);
//		System.err.println("私钥签名---公钥验证");
//		byte[] sign = CertificateCode.sign(data, keyStorePath, password);
//		String str = FileUtil.getString(sign) + "&&" + inputStr;
//		System.err.println("签名:\n" + Hex.encodeHexString(sign));
//		String[] strs = str.split("&&");
//		boolean status = CertificateCode.verify(data, FileUtil.getBytes(strs[0]), keyStorePath, password);
//		System.err.println("状态：\n " + status);
//		System.out.println("解密后的信息：：" + strs[1]);
//	}
//	@Test
//	public void test() throws Exception {
//		System.out.println("alice的操作");
//		//获取文件信息
//		String str=FileUtil.getFileInfo(filepath);
//		System.out.println("加密前的信息"+str);
//		//对明文进行加密使用bob的公钥进行加密
//		byte[] encrypt = CertificateCode.encryptByPublicKey(str.getBytes(), bobkeyStorePath, "123456");
//		//获取加密后的字符串
//		String encryptstr=FileUtil.getString(encrypt);
//		//使用md5加密使用rsa加密后的字符串
//		String string=MD5.md5(encryptstr);
//		//对使用md5加密后的文件信息进行签名,使用 alice的私钥进行签名
//		byte[] sign = CertificateCode.sign(FileUtil.getBytes(string), alicekeyStorePath, "123456");
//		//获取签名后的信息字符串
//		String signstr=FileUtil.getString(sign);
//		//发送的信息（签名信息+bob公钥加密的信息）
//		String message=signstr+"&"+encryptstr;
//
//
//		System.out.println("#################################");
//		System.out.println("Bob的操作");
//		//msgs[0]为文件的签名信息，[1]是使用bob公钥加密后的字符串信息
//		String [] msgs=message.split("&");
//		//首先验证签名
//		//msgs[0]为文件的签名信息,其中参数分别为签名前的信息，签名后的信息，签名方的公钥，密码
//		boolean status = CertificateCode.verify(FileUtil.getBytes(MD5.md5(msgs[1])), FileUtil.getBytes(msgs[0]), alicekeyStorePath, "123456");
//		System.err.println("状态：\n " + status);
//		if (status==true){
//			//使用bob的私钥对信息进行解密（bob公钥加密后的文件信息）
//			String msg=msgs[1];
//			byte [] bt=FileUtil.getBytes(msg);
//			//使用私钥进行解密
//			byte[] decrypt = CertificateCode.decryptByPrivateKey(bt, bobkeyStorePath, "123456");
//			//获取解密后的信息
//			String fileInfo=new String(decrypt);
//			System.out.println("文件信息——"+fileInfo);
//			//验证文件的是否被篡改
//			String [] info=fileInfo.split("&&");
//			String shastr=info[6];
//			if(shastr.equals(FileUtil.getSha512HexStr(filepath))){
//				System.out.println("文件没有被修改");
//			}else {
//				System.out.println("文件已经被修改");
//			}
//		}
//	}
//}
